1. Field of the Invention
This invention relates to a method of programming for a programmable circuit in a redundancy circuit system and an apparatus for carrying out the method.
2. Discussion of Summary
Redundancy circuit systems, which have a plurality of normal subsystems connected to each other to form a certain circuit system and additional spare subsystems, the normal and spare subsystems having identical functions, and in which those of the normal subsystems which do not function as expected are replaced by spare subsystems, are well known in the art. Such redundancy circuit systems are frequently used for semiconductor memories and especially for large scale integrated circuits in order to improve the yield. With increase of the integration density, the probability of presence of a faulty subsystem in a circuit system is increased, and a system which has even a single faulty subsystem is rejected as a faulty system.
In an elementary redundancy circuit system that has been proposed, a plurality of normal subsystems and the same number of spare subsystems are provided and adapted to be connected to the following subsystems by programmable selectors. The selectors have fuses formed of, for example, a polysilicon layer as programmable elements, which are selectively blown out depending on whether the corresponding normal subsystems are faulty or not. Either normal or spare subsystems is used to form a circuit system depending on whether the pertinent fuse is remained as formed or blown out. According to this concept, the redundancy is too high, that is, it is highly liable that many spare subsystems ultimately are not used. This is undesired from the standpoint of the inegration density. In addition, since each selector requires a fuse, a large number of fuses must be used for the entire system. This may reduce the reliability of the system.
As another type of redundancy circuit system, there is one, in which spare subsystems are provided in number smaller than the number of normal subsystems.
An example of such system is disclosed in the U.S. Pat. No. 3,758,761 (Henrion) issued on Sept. 11, 1973. FIG. 1 schematically shows the disclosed redundancy circuit system. The system comprises n normal subsystems 10.sub.1 to 10.sub.n, m spare subsystems 12.sub.1 to 12.sub.m and programmable selectors 14.sub.1 to 14.sub.n+m connected between an input terminal (here, an I/O line) and the respective subsystems 10.sub.1 to 10.sub.n and 12.sub.1 to 12.sub.m. When the individual subsystems 10.sub.1 to 10.sub.n and 12.sub.1 to 12.sub.m are selected by the programmable selectors 14.sub.1 to 14.sub.n+m, they are enabled and connected to a next stage subsystem 16.
The programmable selectors 14.sub.1 to 14.sub.n+m include respective counters whose counts designate the numbers of the subsystems for which the selectros are used. They also each include a polysilicon fuse. A selector with the fuse thereof not blown out, is in an enabled state. That is, it can connect the corresponding subsystem to the next stage subsystem when a signal specifying the selector is input to the I/O line. A selector with its fuse blown out, on the other hand, is in a disabled state and will never connect the corresponding subsystem to the next stage when the signal specifying the selector is input to the I/O line. At this time, a counter which is included in the selector, is not started to count up. Instead, the next selector is enabled in place of it. The following selectors are likewise used in place of their immediately preceding selectors.
For example, when a j-th (j&lt;n) selector 14.sub.j has its fuse not blown out, it will select the corresponding j-th normal subsystem 10.sub.j. At this time, the selector 14.sub.j supplies the counter in the next selector 14.sub.j+1 with a signal indicative of the fact that the next selector 14.sub.j+1 is entitled to select the (j+1)-th normal subsystem 10.sub.j+1. In the event when the j-th normal subsystem 10.sub.j is faulty, the fuse in the selector 14.sub.j is blown out, that is, the selector 14.sub.j is disabled. Thus, the faulty normal subsystem 10.sub.j is never connected to the next stage subsystem 16. At this time, the counter in the selector 14.sub.j does not count up. Consequently, the selector 14.sub.j+1 is supplied with a signal from the selector 14.sub.j-1, i.e., a signal indicative of the fact that it is for the j-th normal subsystem. The selector 14.sub.j+1 thus acts as the j-th selector.
As has been shown, with this system the presence of a faulty normal subsystem will cause an advance of the subsequent subsystems by one place and, in the worst case where there are m faulty normal subsystems, the m-th spare subsystem 12.sub.m acts as the n-th normal subsystem 10.sub.n. With this arrangement, although the spare subsystems can be reduced in number, the construction of the programmable selector is complicated. Besides, with one fuse necessary for each selector, the entire system requires about n+m fuse, more correctly n+m-1 fuses because no fuse is necessary for the last selector 14.sub.n+m. Therefore, the number of necessary fuses is increased with increasing number of normal subsystem, which is undesired from the standpoint of the reliability.
A further system, which is intended to reduce the number of fuses used, is disclosed in "Memories and Redundancy Techniques", by Kim Kokkonen et al, ISSCC '81, WPM 8.1. FIG. 2 schematically shows this system. The system is shown comprising n normal subsystems 20.sub.1 to 20.sub.n and m spare subsystems 22.sub.1 to 22.sub.m, these subsystems being adapted for selective connection to a next stage subsystem 24. Selectors 26.sub.1 to 26.sub.n (which are not programmable) are connected between the respective normal subsystems 20.sub.1 to 20.sub.n and an I/O line, and programmable selectors 28.sub.1 to 28.sub.m are connected between the respective spare subsystems 22.sub.1 to 22.sub.m and the I/O line. The outputs of the programmable selectors 28.sub.1 to 28.sub.m through an OR gate 30 to an inhibit terminal of each of the selectors 26.sub.1 to 26.sub.n.
In this redundancy circuit system, if the normal subsystems 20.sub.1 to 20.sub.n are all good, the programmable selectors 28.sub.1 to 28.sub.m are not programmed at all, but are all in the disabled state so that none of the spare subsystems 28.sub.1 to 28.sub.m will be selected. In this case, the normal subsystems 20.sub.1 to 20.sub.n are selected by the selectors 26.sub.1 to 26.sub.n. If the j-th normal subsystem 20.sub.j is faulty, the programmable selector 28.sub.1 is programmed with its fuses blown out so that the programmable selector 28.sub.1 is enabled and the spare subsystem 22.sub.1 is selected when a select signal for selecting the faulty j-th normal subsystem 20.sub.j is input to the I/O line. The signal for selecting the spare subsystem 22.sub.1 is also fed through the OR gate 30 to all the selectors 26.sub.1 to 26.sub.n to disable these selectors 26.sub.1 to 26.sub.n.
As is shown, this system requires programmable selectors in number corresponding to only the number of spare subsystems. In the individual programmable selectros, the address designating which normal subsystem is faulty is stored. If these addresses are to be stored as binary data, it can be done with only log.sub.2 n fuses. Actually, each programmable selector requires a further fuse for determining whether or not to use the spare subsystems, that is, the system as a whole requires m.times.(1+log.sub.2 n) fuses. In other words, in this embodiment the number of necessary fuses need not be increased in proportion to the number of normal and spare subsystems, which is desirable from the standpoint of the reliability. As an example, suppose a RAM of 64 K bits, in which each subsystem is a memory cell row consisting of 256 memory cells, and which has three spare memory cell rows. In this case 256+3-1=258 fuses are necessary according to the aforementioned patent, whereas with this system requires only 3.times.(1+log.sub.2 256)=27 fuses. However, according to the aforementioned patent only a single fuse is blown out when one of spare subsystems is enabled, whereas with this system the number of fuses that are blown out when one of spare subsystems is eanbled is between 1 and 1+log.sub.2 256=9. The blowing of a fuse may be done by irradiation of laser beam from outside the chip or by externally causing current through a wire bonding pad provided on one terminal end of the fuse, but usually a fuse-blowing circuit is composed on the chip. The fuse-blowing circuit supplies a large current of a constant level. Therefore, if the several fuses are simultaneously blown out for programming an address of a faulty subsystem and the number of fuses is large, the current flowed through each fuse is liable to be too small to ensure reliable blowing of the fuse. To solve this problem, the fuse-blowing circuit may be designed such that it always blows out the maximum possible number of fuses. Doing so, however, would be required large dimension of current path leads and control switching elements, which are not suitable for high density integration.